package modele.Unite;


import modele.Direction;
import modele.Joueur;
import modele.Position;
import modele.Batiment.Batiment;
import modele.Batiment.CampMilitaire;

abstract public class UniteAttaquante extends Unite {
	private static final long serialVersionUID = -3681541766056528623L;
	private int pointsDeVie;
	private float tempsAttenteEntreCoups;
	private int puissanceAttaque;
	protected int clockArmeBaissee;
	private boolean ArmeBaissee;
	private CampMilitaire camp;

	public UniteAttaquante(int vitesseDeplacement, Position position, Direction direction, int pointsDeVie, int tempsAttenteEntreCoups, int puissanceAttaque, int clockArmeBaissee, int coutCreationOr, int coutCreationElixir, Joueur joueur, CampMilitaire camp)
	{
		super(vitesseDeplacement, position, direction, coutCreationOr, coutCreationElixir, joueur);
		this.pointsDeVie = pointsDeVie;
		this.tempsAttenteEntreCoups = tempsAttenteEntreCoups;
		this.puissanceAttaque = puissanceAttaque;
		this.clockArmeBaissee = clockArmeBaissee;
		this.ArmeBaissee = true;
		this.camp = camp;
	}
	

	public void attaquerBatiment (Batiment cible) {
		cible.recevoirDegats(puissanceAttaque);
	}

	public void recevoirDegats(int puissanceAttaque)
	{
		pointsDeVie = pointsDeVie - puissanceAttaque;
		//System.out.println("points de vie restants : "+pointsDeVie);
		if(pointsDeVie <= 0)
		{
			joueur.perdreUniteAttaquante(this);
		}
	}
	
	public CampMilitaire getCamp()
	{
		return camp;
	}

	public int getPointsDeVie() {
		return pointsDeVie;
	}

	public void setPointsDeVie(int pointsDeVie) {
		this.pointsDeVie = pointsDeVie;
	}

	public float getTempsAttenteEntreCoups() {
		return tempsAttenteEntreCoups;
	}

	public void setTempsAttenteEntreCoups(int tempsAttenteEntreCoups) {
		this.tempsAttenteEntreCoups = tempsAttenteEntreCoups;
	}

	public int getPuissanceAttaque() {
		return puissanceAttaque;
	}

	public void setPuissanceAttaque(int puissanceAttaque) {
		this.puissanceAttaque = puissanceAttaque;
	}

	public int getClockArmeBaissee() {
		return clockArmeBaissee;
	}

	public void setClockArmeBaissee(int clockArmeBaissee) {
		this.clockArmeBaissee = clockArmeBaissee;
	}

	public boolean isArmeBaissee() {
		return ArmeBaissee;
	}

	public void setArmeBaissee(boolean armeBaissee) {
		ArmeBaissee = armeBaissee;
	}


	public void setCamp(CampMilitaire camp) {
		this.camp = camp;
	}

}